package com.mh.springboot;

import org.springframework.context.annotation.DeferredImportSelector;
import org.springframework.core.type.AnnotationMetadata;

import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;

/**
 * 配置类导入选择器
 */

public class MhImportSelect implements DeferredImportSelector {

    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        // 获取 META-INF/services 路径下 对应AutoConfiguration文件存放的自动配置类信息
        // 通过创建一个AutoConfiguration接口，所有自动配置只需实现这个接口
        ServiceLoader<AutoConfiguration> serviceLoader = ServiceLoader.load(AutoConfiguration.class);

        List<String> list = new ArrayList<>();

        serviceLoader.forEach(service -> {
            list.add(service.getClass().getName());
        });

        return list.toArray(new String[list.size()]);
    }
}
